// 自定义一个事件总线
export default class MyEvent {
  constructor() {
    // 创建一个保存事件的容器
    this.handlers = {}
  }
  // 订阅，给指定的事件绑定函数
  on(eventName, handler) {
    // 如果不是一个数组，则初始化一个数组
    if (!Array.isArray(this.handlers)) {
      this.handlers[eventName] = []
    }
    // 否则将事件添加到handlers中
    this.handlers[eventName].push(handler)
  }
  // 发布，触发指定的事件，执行on中收集的对应的函数数组，并传入数据
  emit(eventName, data) {
    // handlers为函数组成的数组
    const handlers = this.handlers[eventName]
    if (Array.isArray(handlers)) {
      //遍历数组，将数据传入函数
      for (let i = 0; i < handlers.length; i++) {
        // 传入data
        handlers[i](data)
      }
    }
  }
}